package marketplace.ejb.controller;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import marketplace.ejb.interfaces.IUsuarioEJB;
import marketplace.jpa.datas.DataAdministrador;
import marketplace.jpa.datas.DataCliente;
import marketplace.jpa.datas.DataContenidoDigital;
import marketplace.jpa.datas.DataProveedor;
import marketplace.jpa.datas.DataRegistroAcceso;
import marketplace.jpa.entities.Usuario;
import marketplace.jpa.interfaces.IRegistroAccesoDAO;
import marketplace.jpa.interfaces.IUsuarioDAO;

@Stateless
public class CTRLUsuarioEJB implements IUsuarioEJB {
	
	@EJB
	IUsuarioDAO dao;
	
	@EJB
	IRegistroAccesoDAO daoRegistro;
	
	///////////////////////////////// ADMINISTRADOR /////////////////////////////////////
	
	@Override
	public boolean existeAdministrador(String mail, String password) throws Exception {
		boolean auth = false;
		if (dao.existeAdministrador(mail)){
			DataAdministrador dub = dao.obtenerAdministrador(mail);
			if (dub.getPass().equals(password)) auth = true;
		}		
		return auth;		
	}

	@Override
	public boolean guardarAdministrador(String nick, String nombre, String email, String apellido, String password, String fechaNto, String movil, char sexo) throws Exception {
		DataAdministrador dub = new DataAdministrador(nick, email, nombre, apellido, password, fechaNto, movil, sexo);
		return dao.guardarAdministrador(dub);
	}

	@Override
	public void modificarAdministrador(DataAdministrador dub) throws Exception {
		dao.modificarAdministrador(dub);
	}

	@Override
	public void eliminarAdministrador(String mail) throws Exception {
		dao.eliminarAdministrador(mail);
	}
	
	@Override
	public List<DataAdministrador> getAdministradores() throws Exception {
		return dao.getAdministradores();
	}
	
	@Override
	public DataAdministrador obtenerAdministrador(String mail) throws Exception {
		return dao.obtenerAdministrador(mail);
	}
	
	
	
	
	/////////////////////////////////// PROVEEDOR /////////////////////////////////////	
	
	@Override
	public boolean existeProveedor(String mail, String password) throws Exception {
		boolean auth = false;
		if (dao.existeProveedor(mail)){
			DataProveedor dub = dao.obtenerProveedor(mail);
			if (dub.getPass().equals(password)) auth = true;
		}		
		return auth;		
	}

	@Override
	public boolean guardarProveedor(String nick, String nombre, String email, String apellido, String password, String fechaNto, String movil, char sexo, String qr) throws Exception {
		DataProveedor dub = new DataProveedor(nick, email, nombre, apellido, password, fechaNto, movil, sexo, qr);
		return dao.guardarProveedor(dub);
	}

	@Override
	public void modificarProveedor(DataProveedor dub) throws Exception {
		dao.modificarProveedor(dub);
	}

	@Override
	public void eliminarProveedor(String mail) throws Exception {
		dao.eliminarProveedor(mail);
	}
	
	@Override
	public List<DataProveedor> getProveedores() throws Exception {
		return dao.getProveedores();
	}
	
	@Override
	public DataProveedor obtenerProveedor(String mail) throws Exception {
		return dao.obtenerProveedor(mail);
	}
	
	
	
	//////////////////////////////////////// CLIENTE /////////////////////////////////////////////
	
	@Override
	public boolean guardarCliente(DataCliente cli) throws Exception {
		return dao.guardarCliente(cli);
	}

	@Override
	public List<DataCliente> getListaClientes() throws Exception {
		return dao.getListaClientes();
	}

	@Override
	public void eliminarCliente(String mail) throws Exception {
		dao.eliminarCliente(mail);
		
	}

	@Override
	public DataCliente buscarCliente(String mail) throws Exception {
		return dao.buscarCliente(mail);
	}

	@Override
	public void modificarCliente(DataCliente dc) throws Exception {
		dao.modificarCliente(dc);
		
	}

	@Override
	public boolean existeCliente(String email) throws Exception {
		return dao.existeCliente(email); 
	}

	@Override
	public boolean validarLogin(String mail, String pass) throws Exception {
		return dao.validarLogin(mail, pass); 
	}

	@Override
	public boolean RegistroClienteACanal(String mail, String idRegistroGCM) throws Exception{
		return dao.RegistroClienteACanal(mail, idRegistroGCM);
	}

	@Override
	public String getCodigoClienteAndroid(String mail) throws Exception {
		return dao.getCodigoClienteAndroid(mail);
	}
	@Override
	public boolean registrarAcceso(DataRegistroAcceso dr) throws Exception {
		return daoRegistro.ingresarRegistro(dr);
	}

	@Override
	public List<DataRegistroAcceso> getRegistrosAcceso() throws Exception {
		return daoRegistro.getRegistrosAcceso();
	}

	@Override
	public String getRegistrosAccesoX() throws Exception {
		return daoRegistro.getRegistrosAccesoX();
	}

	@Override
	public String getRegistrosAccesoY() throws Exception {
		return daoRegistro.getRegistrosAccesoY();
	}
	
	@Override
	public List<DataContenidoDigital> getContenidoDigitalesWishlist(String email) throws Exception{		
		return dao.obtenerWishlist(email);
	}

	@Override
	public void agregarContenidoWishlist(String email, int idContenido) throws Exception {
		dao.agregarContenidoDigitalWishlist(email, idContenido);
	}

	@Override
	public boolean existeEnWishlist(String email, int idContenido) throws Exception {
		return dao.existeContenidoDigitalWishlist(email, idContenido);
	}


}
